package cn.iocoder.yudao.module.project.controller.admin.internalcode.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.*;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 内码信息新增/修改 Request VO")
@Data
public class InternalCodeSaveReqVO {

    @Schema(description = "内码编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25896")
    private String id;

    @Schema(description = "内码名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @NotEmpty(message = "内码名称不能为空")
    private String name;

    @Schema(description = "出库单号")
    private String exCode;

    @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "订单编号不能为空")
    private String orderCode;

    @Schema(description = "订单详情id")
    private String orderDetailId;

    @Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotEmpty(message = "型号不能为空")
    private String type;

    @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "物料编号不能为空")
    private String materialCode;

    @Schema(description = "所有箱码,用英文逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "所有箱码,用英文逗号分隔不能为空")
    private String cartonCodes;

    @Schema(description = "批次号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "批次号不能为空")
    private String batchNumber;

    @Schema(description = "批次校验序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "批次校验序号不能为空")
    private String batchCheckNumber;

    @Schema(description = "导入时间", requiredMode = Schema.RequiredMode.REQUIRED)
    // @NotNull(message = "导入时间不能为空")
    private LocalDateTime operatingTime;

    @Schema(description = "操作员", requiredMode = Schema.RequiredMode.REQUIRED)
    private String operator;

    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
    private String remark;

    @Schema(description = "重量(g)")
    private Double weight;

    @Schema(description = "重量状态(0:正常:1过轻,2:过重)", example = "2")
    private Integer weightStatus;

    @Schema(description = "刚性")
    private String rigidity;

    @Schema(description = "刚性状态(0:正常:1异常)", example = "2")
    private Integer rigidityStatus;

    @Schema(description = "刚性测试时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime rigidityTime;

    @Schema(description = "平衡")
    private String balance;

    @Schema(description = "平衡状态(0:正常:1异常)", example = "2")
    private Integer balanceStatus;

    @Schema(description = "平衡测试时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime balanceTime;

    @Schema(description = "二次平衡测试")
    private String balanceTwice;

    @Schema(description = "二次平衡测试时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime balanceTwiceTime;

    @Schema(description = "电子秤id", example = "25230")
    private Long scaleId;

    @Schema(description = "测试工位ID")
    private Integer testWorkstationId;

    @Schema(description = "二次平衡工位ID")
    private Integer balanceTwiceWorkstationId;

    @Schema(description = "测试工位用户ID")
    private Integer testWorkstationUserId;

    @Schema(description = "二次平衡工位用户ID")
    private Integer balanceTwiceWorkstationUserId;

    @Schema(description = "数据来源(空或1:默认,2:派工单)", example = "2")
    private Integer dataSource;

    @Schema(description = "测试称重")
    private Double testWeight;

    @Schema(description = "二次平衡称重")
    private Double balanceTwiceWeight;


}
